// 1828.[模拟] 简易DHCP服务器 https://oj.rnd.huawei.com/problems/1828/details
// DHCP服务器的功能是为每一个MAC地址分配唯一的IP地址。现假设：
// 分配的IP地址范围从 192.168.0.0 到 192.168.0.255
// 总共256个可用地址以点分十进制表示。 请实现一个简易的DHCP服务器，功能如下：
// 分配Request：根据输入的MAC地址分配IP地址池中的IP地址：
// 如果对应的IP已分配并未释放，则为重复申请，直接返回对应已分配的IP地址。
// 如果一个MAC地址已申请过并已释放，即：当前未分配IP地址，则为再申请，优先分配最近一次曾经为其分配过的IP地址，请返回此地址。
// 按升序分配从未被分配过的IP地址；如果地址池中地址都已被分配过，则按升序分配已释放出来的IP地址；若可分配成功，则返回此IP地址。
// 若仍然无法分配成功，则返回NA。
// 释放Release：根据输入的MAC地址释放已分配的IP地址：
// 如果申请释放的对应的IP地址已分配，则释放此IP地址；
// 如果申请释放的对应的IP地址不存在，则不作任何事情；
//优先分配最近一次曾经为其分配过
// 192.168.0.0 到 192.168.0.255 总共256个
// 根据输入的MAC地址分配IP
// 对应的IP已分配并未释放，则为重复申请，直接返回对应已分配的IP地址。
// MAC地址已申请过并已释放，即：当前未分配IP地址，则为再申请，
// 优先分配最近一次曾经为其分配过的IP地址，
// 升序分配地址；如果地址池中地址都已被分配过，则按升序分配已释放出来的IP地址；
// 若可分配成功，则返回此IP地址。
// 1. 按升序分配从未被分配过的IP地址
// 2. 如果地址池中地址都已被分配过，按升序分配已释放出来的IP地址；
// int nIp = it_ip - vtIpUsed.begin();
#include <algorithm>
#include <iostream>
#include <map>
#include <string>
#include <utility>
#include <vector>
using namespace std;
struct MacInfo {
  string mac;
  bool used;
};
class MiniDhcpServer {
  vector<MacInfo> vtIpUsed;  // vtIpUsed[i] = macInfo 表示 192.168.0.i <=> mac
  // 192.168.0.0 - 192.168.0.255 总共256个
  string ipString(unsigned int n) {
    return string("192.168.0.") + to_string(n);
  }
  int new_ip() {
    for (size_t i = 0; i < vtIpUsed.size(); i++) {
      if (vtIpUsed[i].mac.empty()) {
        return i;
      }
    }
    // 分配未使用的
    for (size_t i = 0; i < vtIpUsed.size(); i++) {
      if (!vtIpUsed[i].used) {
        return i;
      }
    }
    return -1;
  }

 public:
  MiniDhcpServer() { vtIpUsed.resize(256); }
  string Request(const string &mac) {
    auto it_ip = std::find_if(vtIpUsed.begin(), vtIpUsed.end(),
                              [mac](MacInfo info) { return info.mac == mac; });
    if (it_ip != vtIpUsed.end()) {
      int nIp = it_ip - vtIpUsed.begin();
      vtIpUsed[nIp].used = true;
      return ipString(nIp);
    }
    int nIp = new_ip();
    if (nIp == -1) {
      return "NA";
    }
    vtIpUsed[nIp].mac = mac;
    vtIpUsed[nIp].used = true;
    return ipString(nIp);
  }
  void Release(const string &mac) {
    //只清除标记
    auto it_ip = std::find_if(vtIpUsed.begin(), vtIpUsed.end(),
                              [&mac](MacInfo info) { return mac == info.mac; });
    if (it_ip != vtIpUsed.end()) {
      vtIpUsed[it_ip - vtIpUsed.begin()].used = false;
    }
  }
};
int main() {
  int line;
  cin >> line;
  MiniDhcpServer dhcp;
  for (int loop = 0; loop < line; loop++) {
    string str;
    cin >> str;
    string opration = str.substr(0, str.find_first_of("="));
    string mac = str.substr(str.find_first_of("=") + 1);
    if (opration == "REQUEST") {
      cout << dhcp.Request(mac) << endl;
    } else if (opration == "RELEASE") {
      dhcp.Release(mac);
    }
  }
  return 0;
}